package proyectoX.src.municiones;


import java.awt.Rectangle;

import javax.swing.JLabel;

import proyectoX.src.aplicacion.Nivel;
import proyectoX.src.armas.arma;
import proyectoX.src.entidades.nave;

/**
 * Clase que corresponde a la abstracción de todas las municiones.
 *
 */
public abstract class MunicionX extends JLabel{

	protected Nivel nivel;
	protected arma arma;
	protected int velocidad;

	/**
	 * Crea a la munición con los datos pasados por parámetro.
	 * @param arma Arma que la dispara.
	 * @param nivel Nivel actual.
	 * @param velocidad Velocidad de desplazamiento.
	 */
	public MunicionX (arma arma, Nivel nivel, int velocidad){ 		
		this.arma=arma;
		this.nivel=nivel;
		this.velocidad=velocidad;
	}


	/**
	 * Método para actualizar la posición de la munición.
	 */
	public abstract void actualizarPosicion();

	/**
	 * Devuelve el área de colisión de la munición. En este caso es nula porque no colisiona.
	 * @return Área de colisión.
	 */
	public abstract Rectangle getBounds();

	/**
	 * Utilizado para pedir una manera de colisión en nivel.
	 * @return Verdadero si colisionó, falso en caso contrario.
	 */
	public abstract boolean calcularColisiones();	


	/**
	 * Devuelve el daño efectuado por esta munición.
	 * @return Daño realizado.
	 */
	public int getDanio() {
		return arma.getDanio();
	}

	/**
	 * Establece la velocidad de desplazamiento del disparo.
	 * @param i Velocidad.
	 */
	public void setVelocidad(int i){
		velocidad=i;
	}

	/**
	 * Devuelve la velocidad de desplazamiento del disparo.
	 * @return La velocidad del disparo.
	 */
	public int getVelocidad(){return velocidad;}


}


